In many multiple-node computer systems it is important for processes or tasks running on one computer node (sometimes called the client) to be able to access information stored on a disk or similar device that is associated with another computer node (sometimes called the server). Generally, accessing data on a remotely located disk is expensive in terms of latency and resources used. The present invention provides a system and method for reducing both the latency and the resources used on the server node when a client node performs a disk read from a disk located at (or attached to) the server node.
Referring to FIG. 1, there is shown a highly simplified representation of two computer nodes herein called Node A or the server 50, and Node B or the client 52. The computer at each node can be any type of computer. In other words, the particular brand, architecture and operating system is of no importance to the present discussion, so long as each computer node is configured to operate in a networked environment. Each computer node 50, 52 will typically include a central processing unit (CPU) 54, random access memory 56, an internal memory bus 58 and a communications interface 60, often called a network interface card (NIC). The computer nodes communicate with each other by transmitting messages or packets to each other via a network interconnect 62, which may include one or more types of communication media, switching mechanisms and the like.
For the purposes of this discussion it is assumed that the NIC is suitable for memory mapped message passing. That is, the NIC must be directly addressable using local physical addresses, and direct loads and stores to from and to locations in a remote computer node can be performed through the NIC without having to use the NIC's driver software.
Further, since the present invention involves remote disk access, at least one of the computer nodes 50 has a non-volatile, non-random access memory device 64, such as a high speed magnetic disk, and a corresponding disk controller 66. Actually, in many implementations most or all of the computer nodes will have one or more local disk drives. However, since we are only interested in explaining how one computer node 52 accesses data on the disk 64 connected to another computer node 50, just the disk 64 for the server node 50 is shown in FIG. 1.
It should be noted that the term "message transmission" is sometimes used to indicate or imply the use of a message transmission protocol in which the receiving system automatically processes the transmitted message, while the term "data transmission" simply indicates the writing or copying of data from one system to another. However, in this document, the terms "message transmission" and "data transmission" will be used interchangeably.
FIG. 2 shows a simplified representation of a conventional communications interface (or NIC) 60, such the ones used in the computer nodes of FIG. 1, showing only the components of particular interest. The NIC 60 typically includes two address mapping mechanisms: an incoming memory management unit (IMMU) 70 and an outgoing memory management unit (OMMU) 72. The purpose of the two memory management units are to map local physical addresses (PA's) in each computer node to global addresses (GA's) and back. Transport logic 74 in the NIC 60 handles the mechanics of transmitting and receiving message packets, including looking up and converting addresses using the IMMU 70 and OMMU 72.
The dashed lines between the memory bus 60 and the IMMU 70 and OMMU 72 represent CPU derived control signals for storing and deleting address translation entries in the two MMU's, typically under the control of a NIC driver program. The dashed line between the memory bus 60 and the transport logic 74 represents CPU derived control signals for configuring and controlling the transport logic 74.